plat: Hikey960: fix the CPU hotplug
authorLeo Yan <[email protected]>
Thu, 15 Jun 2017 05:51:22 +0000 (13:51 +0800)
committerLeo Yan <[email protected]>
Mon, 19 Jun 2017 00:00:46 +0000 (08:00 +0800)
In CPU off callback function, the old code uses the function
hisi_test_pwrdn_allcores() to check if all CPUs in cluster have been
powered off and if it's valid then power off the whole cluster. But the
function hisi_test_pwrdn_allcores() only maintains the different power
states only for CPU suspend/resume flow, so it cannot return correct
states for CPU on/off flow.

This patch is to change use hisi_test_cpu_down() to check if all CPUs
have been powered off, so that can power off the whole cluster properly
when all CPUs in cluster have been hotplugged off.

Signed-off-by: Tao Wang <[email protected]>
Signed-off-by: Leo Yan <[email protected]>
plat/hisilicon/hikey960/hikey960_pm.c

index 257299e8094e12f676a1ffe8521a592daebfbcae..3447c9f114ff5890bd2a6af5def617ad9ece00ed 100644 (file)
@@ -102,7 +102,7 @@ void hikey960_pwr_domain_off(const psci_power_state_t *target_state)
        hisi_powerdn_core(cluster, core);
 
        /* check if any core is powered up */
-       if (hisi_test_pwrdn_allcores(cluster, core)) {
+       if (hisi_test_cpu_down(cluster, core)) {
 
                cci_disable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));